#ifndef CIRCULARLINKLIST_H_INCLUDED
#define CIRCULARLINKLIST_H_INCLUDED


/***********************************************************************
 *  Project： CircularLinkList 循环链表
 *  Function: 循环链表最大的特点是尾节点的指针域指向第一个节点
 *  Description: 优点是能够通过任意节点遍历整个链表结构
 *  PROJECT_FILENAME: dataStruct.cbp 选择此文件打开已创建项目
 *  Author: coder-itl
 ***********************************************************************
 *  Copyright 2021-10-07-14.47.03 by coder-itl
 ***********************************************************************/

#include "stdio.h"
#include "stdlib.h"

#include "DataElement.h"

/**
 * 循环链表的节点
 */
typedef struct CircularNode {
    /* 数据域 */
    ElementType data;
    /* 指向下个节点的指针域 */
    struct CircularNode *next;
} CircularNode;

/**
 * 循环链表的节点
 */
typedef struct CircularLinkList {
    /* 指向第一个节点的指针 => 头指针  */
    CircularNode *next;
    int length;
} CircularLinkList;

/**
 *  循环链表初始化
 * @param clList
 * @param dataArray
 * @param length
 */
void InitCircularLinkList(CircularLinkList *clList, ElementType *dataArray, int length);

/**
 * 在循环链表指定位置插入元素
 * @param clList 要执行操作的循环链表
 * @param position 指定位置
 * @param element 要操作的元素
 */
void InsertCircularLinkList(CircularLinkList *clList, int position, ElementType element);

void PrintCircularLinkList(CircularLinkList *clList);

#endif // CIRCULARLINKLIST_H_INCLUDED

